package com.singfan.core.service;

import com.singfan.core.dao.database.model.*;

import java.util.List;

/**
 * Author: hansonghe
 * Date: 2015-08-24 15:13
 * Desc:
 */
public interface IBarberService {
    List<Barber> selectBarberListByShopId(long shopId, int serviceType, int dayTime, int clockTime);

    BarberListResult findBarberList(int serviceType, int listOrderType, int cityId, int businessCircleId, double longitude, double latitude, int pageIndex, int pageSize, int dayTime, int clockTime, boolean onlyMaster);

    List<Barber> findBarberList(List<Long> barberIdList);

    Barber findBarber(long barberId);

    List<BarberHairstyle> findBarberHairstyleList(long barberId, int pageIndex, int pageSize);

    List<BarberHairstyle> findBarberSelfHairstyleList(long barberId, int pageIndex, int pageSize, int status);

    List<BarberHairstyle> findBarberHairstyleList(List<Long> barberHairstyleIdList);

    BarberHairstyle findBarberHairstyle(long hairstyleId);

    List<BarberHairstyle> findBarberHairstyleList(int listOrderType, int cityId, int businessCircleId, int gender, double longitude, double latitude, int pageIndex, int pageSize);

    List<BarberAppointment> findBarberAppointmentListByDayTime(long barberId, int appointmentDay);

    List<Barber> searchBarberList(String searchText, int pageIndex, int pageSize);

    List<BarberHairstyle> searchHairstyle(String searchText, int pageIndex, int pageSize);

    BarberToken findBarberToken(String accessToken);

    void createPhoneSecurityCode(String phoneNumber, String securityCode);

    boolean verifyPhoneSecurityCode(String phoneNumber, String securityCode);

    Barber create(String telNum, String securityCode, String pwd);

    boolean isExist(String phoneNumber);

    String createAccessToken(long barberId, int cityId, int status);

    void changePwd(String phoneNumber, String pwd);

    Barber findBarber(String phoneNumber);

    void updateBarberDetail(Barber barber);

    List<BarberHairstyle> findBarberHairstyleByFavorable(int pageIndex, int pageSize);

    List<BarberHairstyle> findBarberHairstyleByTime(int pageIndex, int pageSize);

    void updateHairstyle(BarberHairstyle barberHairstyle);

    void deleteBarberHairstyle(long barberId, long hairstyleId);

    BarberAppointment findBarberAppointment(long barberId, int appointmentDay, int appointmentClock);

    void createRestAppointment(long barberId, int appointmentDay, int appointmentClock);

    void deleteAppointment(long barberId, int appointmentDay, int appointmentClock);

    List<BarberComment> findBarberCommentList(long barberId, int pageIndex, int pageSize, boolean satisfaction);

    List<BarberComment> findBarberCommentList(long barberId, int pageIndex, int pageSize);

    void deleteAppointment(long orderId);

    void createBarberHairstyle(BarberHairstyle barberHairstyle);

    List<Barber> findShopBarberList(long shopId, int businessStatusType);

    void updateBarberStatus(long barberId, int businessStatusType);

    void deleteBarberToken(long barberId);

    void updateBarberHairstyleStatus(long barberId, int status);
}
